package excercise;

import java.util.Scanner;

public class ex01_Q01 {

	
	public static void main(String[] args) {
		

	

		// 문제2
		char name = '채';
		name = '희';
		name = '원';
		int age = 29;
		int kg = 85;

		// 답

		float age1 = 29f;
		float wei = 85.6f;
		System.out.println("채희원" + age1 + wei);

		// 문제3
		int a = 3;
		char b = 'x';

		System.out.println(a * b);

		System.out.println("3x+y");
		System.out.println("-------");
		System.out.println(" z+2   ");

		// 문제 4
		double num = (1 / 3) * 3;
		System.out.println(num);
		// 정수를 정수로 나누면 결과는 정수로 나옴
		// 1/3의 결과는 일반적으로 0.3333333 이지만
		// 결과는 정수 형태가 되므로 최종적으로 0 임. 그래서 결과가 0.0이 나옴
		// 따라서 1/3의 결과가 실수가 되어야 함
		// 형번환 연산자인 ()를 이용해서 정수를 실수로 바꾸고 연산식을 실행하면 바른 결과가 나옴
		num = ((float) 1 / 3) * 3;
		System.out.println(num);

		// 문제 5

		int quo = 7 / 3;
		System.out.println(quo);
		int re = 7 % 3;
		System.out.println(re);

		// 문제 6 // 대입연산자 파악 할것 +=, -=, *=, %= 의 용도 파악
		int res = 11;
		res /= 2;
		System.out.println(res);

		// 문제 7 // 연산자 우선순위 파악
		double x = 2.5;
		double y = -1.5;
		int m = 18;
		int n = 4;
		double A = x + n * y - (x + n * y);
		System.out.println(A);
		double B = m / n + m % n;
		System.out.println(B);
		double C = 5 * x - n / 5;
		System.out.println(C);
		double D = 1 - (1 - (1 - (1 - (1 - n))));
		System.out.println(D);

		// 문제 8// #08

		double q = (3 + 4.5 * 2 + 27 / 8);
		boolean d = true || false && 3 < 4 || !(5 == 7);
		System.out.println(d);

		boolean h = true || (3 < 5 && 6 >= 2);
		System.out.println(h); // 노란색 밑줄은 데드 코드로 실제 연산되지 않는다.

		char ggg = 'z';
		char yyy = 'a';
		System.out.println('z' > 'a');

		// 문자변수가 산수/관계 연산자의 피연산자로 되면
		// 자동적으로 int 형으로 승격
		// 문자는 일반적으로 ascii문자 집합의 십진수로 변환
		// 따라서 문자 a는 ascii문자집합 십진수 65와 같음
		// 문자 z는 아스킷 문자짒합 십진수 122와 같음
		// 문자 0은 아스킷 문자집합 십진수 48과 같음
		// 또한 정수를 char 형으로 변환하면
		// 아스킷 문자집합의 문자로 출력됨

		System.out.println(7 % 4 + 3 - 2 / 6 * 'z');
		System.out.println(53 % 21 < 45 / 18);

		System.out.println(7 % 4 + 3 - 2 / 6 * 'z');
		// 문자 z는 ASCII코드의 십진수 122로 인식
		System.out.println((char) 63);

		double hhh = 7 % 4 + 3 - 2 / 6;

		// 문제 9
		System.out.println("may13,1988 fell on day number");
		System.out.println("H" + "I" + "is" + 1 + "more example");
		System.out.println("print" + "me too");

		System.out.print("here is" + 10 * 10 + "//that's100");
		System.out.println("how" + '?' + "hu");

		// 프린트 문은 문자열 뿐아니라 수식을 실행하고 그 결과를 출력하는 데에도 사용 된다.
		System.out.println("check out this line");
		System.out.println("//hello there" + '9' + 7);
		System.out.println('H' + 'I' + "is" + 1 + "more exam");
		System.out.println("H" + "e" + " is" + "  best");
		System.out.println();// 줄 바꿈만 출력
		System.out.println(         );
		

		// 문제10
		boolean mmm = (true && false && true || true);
		System.out.println(mmm);
		boolean hhhh = (true && false) || (true && !false) || (false && !false);
		boolean ftt = (2 < 3) || (5 > 2) && !(4 == 4) || 9 != 4;
		System.out.println(ftt);
		boolean uip = (6 == 9 || 5 < 6);
		System.out.println(uip);
		// 문제 11

		float yui = 27f / 13 + 4;
		System.out.println(yui);
		float tyu = 42 % 3f + 18;
		System.out.println(tyu);
		boolean op = (3 < 4) && true;
		System.out.println(op);
		float iopp = 23 / 5f + 23 / 5.0f;
		System.out.println(iopp);

		int er = 2 + 'a';
		System.out.println(er);

		double rty = (double) 'a' / 'b';
		System.out.println(rty);
		// byte< short< int(char)<long<float<double ----데이터 타입 크기
		// ( ) 이순서인 경우는 자동 형변환이 되지만 반대인 경우 강제로 형변환을 해야 한다.

		// 문제 12
		int nn = (short) 3.9;
		System.out.println(nn);
		System.out.println("nn==" + nn);

		// 문제 13
		nn = 3;
		nn++;
		System.out.println("nn==" + nn);
		nn--;
		System.out.println("nn==" + nn);

		// 문제 14
		System.out.println("2+2=" + (2 + 2));
		System.out.println("2+2=" + 2 + 2);

		// 문제 15

		char aaa, bbb;
		aaa = 'b';
		System.out.println(aaa);
		//

		// 문제 16

		int nb = 1;
		int k = 2;
		int bh = nb;
		if (k < nb)
			bh = k;
		System.out.println();

		// 문제 18
		int qqq = 30;

		if (qqq % 2 == 0)
			System.out.println(qqq + "is even");
		else
			System.out.println(qqq + "is odd");

		int qq = 35;
		if (qq % 2 == 0)
			System.out.println(qq + "is even");
		else
			System.out.println(qq + "is odd");

		// 문제 19
		int x9 = 2;
		int x10 = 2;
		if (x9 > 2) {
			if (x9 > 2) {
				int zz = x9 + x10;
				System.out.println("zz is " + zz);
			} else {
				System.out.println("x9 is " + x9);
			}

		}

		System.out.println(         );
		
		

		// 문제 20

		int a4 = 3;
		if (a4++ == 3) {

			System.out.println("three");
		} else
			System.out.println("four");

		// 후치 증가연산자
		// 변수의 값이 먼저 식에 적용되고 그 후에 값이 증가된다.

		int a5 = 3;
		if (++a5 == 3)
			System.out.println("three");
		else
			System.out.println("four");
		// 전치 증가 연산자
		// 먼저 변수의 값을 증가 시킨 후 그 값을 식에 적용

		int a6 = 3;
		a6 = a6++;
		if (a6 == 3)
			System.out.println("three");
		else
			System.out.println("four");

		int a7 = 3;
		a7 = a7++;
		if (a == 3)
			System.out.println("three");
		else
			System.out.println("four");

		// 문제 21 풀이 중요
		int salary = 17500;
		boolean isMarried = false;
		float tax = 0.0f;

		if (isMarried == true) {
			// 기혼인 경우
			if (salary < 6000)
				tax = (salary * 0.1f);
			else if (salary >= 6000)
				tax = salary * 0.25f;

		} else if (isMarried == false) {
			// 미혼인 경우
			if (salary < 3000)
				tax = salary * 0.1f;
			else if (salary >= 3000)
				tax = salary * 0.25f;
		}

		System.out.println(isMarried);
		System.out.println(salary);

		// 22번 풀이
		int thisYear = 2013;
		if (thisYear % 4 == 0 && thisYear % 100 != 0)
			System.out.println("윤년입니다");
		else if (thisYear % 400 == 0)
			System.out.println("윤년입니다");
		else
			System.out.println("윤년이 아닙니다");

		// 24번 구구단 발행 프로그램

		Scanner sc = new Scanner(System.in); // 단값 지정 
        int dan=sc.nextInt();  
       
        for (int c4=1;a<=9;++a){
          System.out.println(dan+"X"+a+"="+(dan*a));
   
	    }
 	  // 23번 로또 문제 풀이
       
        int[] mylotto=new int[4];
        int[] comlotto =new int[4];
        int match=0;       //일치 횟수
       
	   
        //컴퓨터로 3자리 입력
        for (int i=1; i<comlotto.length;++i){
        	 comlotto[i]=(int)(Math.random()*10);
        }
        
        
        // 사용자로부터 3자리 입력받기
        sc=new Scanner (System.in);
        for(int i=1 ;i< mylotto.length;++i){
        	System.out.println(i+"번째 숫자를 입력하세요");
        	mylotto[i]=sc.nextInt();
        }
        // 비교 
           if (mylotto[1]==comlotto[1]||
        	  mylotto[1]==comlotto[2]||
        	  mylotto[1]==comlotto[3])++match;
        
            if (mylotto[2]==comlotto[1]||
        		mylotto[2]==comlotto[2]||
        		mylotto[2]==comlotto[3])++match;
       
            if (mylotto[3]==comlotto[1]||
        		mylotto[3]==comlotto[2]||
        		mylotto[3]==comlotto[3])++match;
        
        //일치 여부에 따라 상금 부여
                if(match==1)
            	System.out.println("3등 당첨");         
                else if(match==2)
                System.out.println("2등 당첨");
                else if(match==3)
                System.out.println("1등 당첨 백만원");
                else System.out.println("꽝 ");         
                
                System.out.println("추첨번호:");
                 for (int i=1; i<=3;++i)
        	    System.out.println(comlotto[i]+"\t");
                System.out.println("\n 복권번호:");
               for (int i=1 ; i<=3 ;++i)
        	   System.out.println(mylotto[i]+"\t");
        
           
           //26번 
        int menum = 0;  //사용자 
        int comnum=0;  //컴터 
        
        comnum=(int)(Math.random()*100)+1;
        sc = new Scanner(System.in);
       
        while( menum!=comnum){
        	System.out.println("1-100사이 숫자를 입력하세요");
        	menum=sc.nextInt(); 
        
        if(menum>comnum)
        	System.out.println("추측한 값이 큽니다");
        else if (menum<comnum)
        	System.out.println("추측한 값이 작습니다.");
        else 
        	System.out.println("빙고 ");
       
        }
        	   
        	   
        	   
        	   
        	   
        	   
        	   
        	   
    
        
        
        
	
	}//class

}
